package org.hy.persistence.friends;

import java.util.List;
import java.util.Map;

import org.apache.ibatis.annotations.Param;
import org.hy.domain.friends.Friend;

public interface FriendMapper {
	
	/**
	 * 统计查询返回的map中包含的key的名称熟悉度
	 */
	static String MAP_KEY_FAMILIARITY = "familiarity";
	/**
	 * 统计查询返回的map中包含的key的名称数目count
	 */
	static String MAP_KEY_COUNT = "count";
	
	
	/**
	 * 分页查找用户的好友
	 * @param uid 用户id
	 * @param offset 
	 * @param size
	 * @return
	 */
	List<Friend> findFriendByUid(@Param("uid")int uid,@Param("offset")int offset,@Param("size")int size);
	
	/**
	 * 从userIds数组中查找属于好友的id列表.不是好友关系的可以提供关注链接
	 * @param uid 用户uid
	 * @param userIds 其他人id
	 * @return 属于好友关系的id
	 */
	List<Integer> findFriendByFids(@Param("uid")int uid,@Param("userIds")int[]userIds);
	
	
	/**
	 * 根据熟悉度分页查找用户好友
	 * @param uid
	 * @param familiartiy
	 * @return
	 */
	List<Friend> findFriendByFamiliarity(@Param("uid")int uid,@Param("familiarity")int familiartiy) ;
	
	/**
	 * 统计用户好友数
	 * @param uid 用户id
	 * @return 好友数
	 */
	int countFriends(int uid);
	
	/**
	 * 统计各个熟悉度下好友的数目
	 * @param uid 用户id
	 * @return map列表,[{familiarity:1,count:10},{{familiarity:2,count:5}}]
	 */
	List<Map<String,Integer>> countFriendsWithFamiliarity(int uid);
	
	/**
	 * 新增好友
	 * @param friend 好友对象
	 * @return
	 */
	int insertFriend(Friend friend);
	
	/**
	 * 删除好友
	 * @param id 
	 * @return
	 */
	int deleteFriend(int id);
	
	/**
	 * 更改好友的熟悉度
	 * @param friend
	 * @return 
	 */
	int updateFriendFamiliarity(Friend friend);
}
